home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / pibt40s1.arc / GETCAPTU.MOD < prev    next >
Text File  |  1987-04-17  |  8KB  |  195 lines

  1. (*----------------------------------------------------------------------*)
  2. (*          Get_Capture_File -- Get session capture file name           *)
  3. (*----------------------------------------------------------------------*)
  4.  
  5. PROCEDURE Get_Capture_File( Capture_FName : AnyStr;
  6.                             Capture_Type  : AnyStr   );
  7.  
  8. (*----------------------------------------------------------------------*)
  9. (*                                                                      *)
  10. (*     Procedure:  Get_Capture_File                                     *)
  11. (*                                                                      *)
  12. (*     Purpose:    Opens capture file                                   *)
  13. (*                                                                      *)
  14. (*     Calling Sequence:                                                *)
  15. (*                                                                      *)
  16. (*        Get_Capture_File( Capture_FName : AnyStr;                     *)
  17. (*                          Capture_Type  : AnyStr );                   *)
  18. (*                                                                      *)
  19. (*           Capture_FName --- name of capture file; prompted for       *)
  20. (*                             if null.                                 *)
  21. (*           Capture_Type  --- type of capture to perform.              *)
  22. (*                             E = edited, U = unedited.                *)
  23. (*                                                                      *)
  24. (*     Calls:                                                           *)
  25. (*                                                                      *)
  26. (*        Open_For_Append                                               *)
  27. (*        YesNo                                                         *)
  28. (*        Save_Screen                                                   *)
  29. (*        Draw_Menu_Frame                                               *)
  30. (*        Restore_Screen                                                *)
  31. (*        Reset_Global_Colors                                           *)
  32. (*                                                                      *)
  33. (*----------------------------------------------------------------------*)
  34.  
  35. VAR
  36.    OK_File           : BOOLEAN;
  37.    Open_OK           : BOOLEAN;
  38.    File_Exists       : BOOLEAN;
  39.    Name_Given        : BOOLEAN;
  40.    Ierr              : INTEGER;
  41.  
  42. BEGIN (* Get_Capture_File *)
  43.  
  44.    Save_Partial_Screen( Saved_Screen, 10, 10, 70, 16 );
  45.    Draw_Menu_Frame( 10, 10, 70, 16, Menu_Frame_Color, Menu_Title_Color,
  46.                     Menu_Text_Color, 'Capture session' );
  47.  
  48.                                    (* If capture mode ON, close current  *)
  49.                                    (* capture file and turn capture mode *)
  50.                                    (* OFF.                               *)
  51.    IF Capture_On THEN
  52.       BEGIN
  53.             (*$I-*)
  54.          CLOSE( Capture_File );
  55.             (*$I+*)
  56.          Capture_On := FALSE;
  57.          TextColor( Menu_Text_Color_2 );
  58.          WRITELN;
  59.          WRITELN('*** Capturing of session to ', Capture_File_Name,
  60.                  ' terminated.');
  61.          TextColor( Menu_Text_Color );
  62.          DELAY( Two_Second_Delay );
  63.       END
  64.    ELSE                            (* If capture mode OFF, then get name *)
  65.                                    (* of file to capture to, and turn on *)
  66.                                    (* capture mode.                      *)
  67.  
  68.       BEGIN  (* Capture mode was Off *)
  69.  
  70.          Capture_File_Name := Capture_FName;
  71.  
  72.          OK_File     := FALSE;
  73.          Name_Given  := LENGTH( Capture_File_Name ) > 0;
  74.  
  75.          REPEAT
  76.  
  77.             Clear_Window;
  78.  
  79.             TextColor( Menu_Text_Color_2 );
  80.             WRITE('File name to capture session to ? ');
  81.             TextColor( Menu_Text_Color );
  82.  
  83.             IF ( NOT Name_Given ) THEN
  84.                BEGIN
  85.                   Capture_File_Name := '';
  86.                   Read_Edited_String( Capture_File_Name );
  87.                   WRITELN;
  88.                   IF Capture_File_Name = CHR( ESC ) THEN
  89.                      Capture_File_Name := '';
  90.                END
  91.             ELSE
  92.                WRITELN( Capture_File_Name );
  93.  
  94.             DELAY  ( One_Second_Delay  );
  95.  
  96.             IF ( LENGTH( Capture_File_Name ) > 0 ) THEN
  97.                BEGIN
  98.  
  99.                   ASSIGN( Capture_File , Capture_File_Name );
  100.                      (*$I-*)
  101.                   RESET( Capture_File );
  102.                      (*$I+*)
  103.  
  104.                   IF Int24Result = 0 THEN
  105.                      BEGIN
  106.  
  107.                         IF ( NOT Name_Given ) THEN
  108.                            OK_File := YesNo('File ' + Capture_File_Name +
  109.                                             ' already exists, append to it (Y/N) ? ')
  110.                         ELSE
  111.                            OK_File := TRUE;
  112.  
  113.                         File_Exists := TRUE;
  114.  
  115.                            (*$I-*)
  116.                         CLOSE( Capture_File );
  117.                            (*$I+*)
  118.  
  119.                      END
  120.                   ELSE
  121.                      BEGIN
  122.                         OK_File     := TRUE;
  123.                         File_Exists := FALSE;
  124.                      END;
  125.  
  126.                END;
  127.  
  128.          UNTIL ( OK_File ) OR ( LENGTH( Capture_File_Name ) = 0 );
  129.  
  130.          IF LENGTH( Capture_File_Name ) > 0 THEN
  131.             BEGIN
  132.  
  133.                   (*$I-*)
  134.                IF File_Exists THEN
  135.                   Open_OK := Open_For_Append( Capture_File,
  136.                                               Capture_File_Name, Ierr )
  137.                ELSE
  138.                   BEGIN
  139.                         (*$I-*)
  140.                      ASSIGN ( Capture_File, Capture_File_Name );
  141.                      REWRITE( Capture_File );
  142.                         (*$I+*)
  143.                      Open_OK := ( Int24Result = 0 );
  144.                   END;
  145.  
  146.                IF ( NOT Open_OK ) THEN
  147.                   BEGIN
  148.                      TextColor( Menu_Text_Color_2 );
  149.                      WRITELN('Can''t open ',Capture_File_Name,' for output.');
  150.                      WRITELN('Capture will not be done.');
  151.                      TextColor( Menu_Text_Color );
  152.                   END
  153.                ELSE
  154.                   BEGIN
  155.  
  156.                      IF ( LENGTH( Capture_Type ) <= 0 ) THEN
  157.                         Capture_Type := ' ';
  158.  
  159.                      CASE UpCase(Capture_Type[1]) OF
  160.                         'U':  Exact_Capture := TRUE;
  161.                         'E':  Exact_Capture := FALSE;
  162.                         ELSE
  163.                            WRITELN;
  164.                            Exact_Capture := NOT YesNo('Perform edited capture? ');
  165.                            WRITELN;
  166.                      END (* CASE *);
  167.  
  168.                      TextColor( Menu_Text_Color_2 );
  169.  
  170.                      IF Exact_Capture THEN
  171.                         WRITE('Unedited')
  172.                      ELSE
  173.                         WRITE('Edited');
  174.  
  175.                      WRITE(' capture to ');
  176.  
  177.                      TextColor( Menu_Text_Color );
  178.  
  179.                      WRITE( Capture_File_Name );
  180.  
  181.                      Capture_On := TRUE;
  182.  
  183.                   END;
  184.  
  185.                DELAY  ( One_Second_Delay  );
  186.  
  187.             END (* Length( Capture_File_Name ) > 0 *);
  188.  
  189.       END  (* Capture mode was OFF *);
  190.  
  191.    Restore_Screen( Saved_Screen );
  192.    Reset_Global_Colors;
  193.  
  194. END   (* Get_Capture_File *);
  195.